package com.uncp.comisiondeadmision.comprobantedepago.dao;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;



import com.uncp.comisiondeadmision.comprobantedepago.beans.PostulanteBean;
import com.uncp.comisiondeadmision.util.MySqlDBConn;




public class MySqlPostulanteDAO implements PostulanteDAO {

	@Override
	public int insertaPostulante2(PostulanteBean postulanteBean)
			throws SQLException {
		
		
		
		System.out.println("llego aca la base de datos!!!!");
		Connection conn = null;
		PreparedStatement pstm = null;
		String sql = "insert into Postulante(codpostulante,NOMBRES,APEPAT,APEMAT,FECHANAC,DNI,EMAIL,TELEFONO,FOTO,ESTADO,CODCARRERA,codtipomodalidad) values(null,?,?,?,?,?,?,?,?,?,?,?)";

		try {
			conn = new MySqlDBConn().getConnection();
			pstm = conn.prepareStatement(sql);
			pstm.setString(1,postulanteBean.getStrNombres());
			pstm.setString(2,postulanteBean.getStrApepat());
			pstm.setString(3,postulanteBean.getStrApemat());
			pstm.setString(4,postulanteBean.getStrFechaNac());
			pstm.setString(5,postulanteBean.getStrDni());
			pstm.setString(6,postulanteBean.getStrEmail());
			pstm.setString(7,postulanteBean.getStrTelefono());
			pstm.setBytes(8, postulanteBean.getBlobImagen());
			pstm.setString(9,postulanteBean.getStrEstado());
			pstm.setInt(10,postulanteBean.getIntCodCarrera());
			pstm.setInt(11,postulanteBean.getIntCodModalidad());
			
			
			pstm.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			conn.close();
			pstm.close();
		}
		return -1;
	}
	public int verificarDNI(String DNI)throws SQLException {
		
		
		return -1;
		
	
	}
	@Override
	public int insertaPostulante(PostulanteBean postulanteBean)
			throws SQLException {
		
		Connection conn = null;
		//CallableStatement se necesita para store procedure y function
		CallableStatement cs = null;
		
		int codPostulante=-1;
		try {
			String sql = "{? = call insertarPostulante(?,?,?,?,?,?,?,?,?,?,?)}";
			conn = new MySqlDBConn().getConnection();
			//igual que un prepared Statemen --- prepareCall
			cs = conn.prepareCall(sql);
			
			
			//el valor de retorno es considerado como un parametro de salida
			cs.registerOutParameter(1,Types.INTEGER);
			
			cs.setString(2,postulanteBean.getStrNombres());
			cs.setString(3,postulanteBean.getStrApepat());
			cs.setString(4,postulanteBean.getStrApemat());
			cs.setString(5,postulanteBean.getStrFechaNac());
			cs.setString(6,postulanteBean.getStrDni());
			cs.setString(7,postulanteBean.getStrEmail());
			cs.setString(8,postulanteBean.getStrTelefono());
			cs.setBytes(9, postulanteBean.getBlobImagen());
			cs.setString(10,postulanteBean.getStrEstado());
			cs.setInt(11,postulanteBean.getIntCodCarrera());
			cs.setInt(12,postulanteBean.getIntCodModalidad());
			
			//pongo el execute tambien hay execute update y execute query
			cs.execute();
			codPostulante=cs.getInt(1);
			System.out.println("codigo de postulante "+ codPostulante);
		} catch(SQLException e) {
			e.printStackTrace();
		} finally {
			conn.close();
			cs.close();
		}
		return codPostulante;
	}
}
